home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD Exchange
/
CD Exchange - Volume 1.iso
/
d.t.p
/
utils
/
others
/
pcal
/
pcallang.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-02-21
|
35KB
|
992 lines
/*
* pcallang.h - language-dependent strings (month and day names, option file
* keywords, preprocessor tokens, prepositions, etc.):
*
* Revision history:
*
* 4.3 AWR 12/03/91 support -s flag (override default
* shading of dates and fill boxes)
*
* 10/17/91 support -Z flag to generate debugging
* information
*
* 4.2 AWR 10/08/91 support -[kK] flags (select position
* of small calendars
*
* 10/03/91 support "note/<n>" (new message only)
*
* support -S flag (no small calendars)
*
* 10/02/91 support -N flag (user-specified notes
* heading)
*
* change message for -n to reflect
* optional notes font size
*
* 09/30/91 support "if" (synonym for "ifdef") and
* "elif" in date file
*
* 09/19/91 support -c flag (generate input file
* suitable for use with Un*x "calendar"
* utility and Pcal)
*
* support "elif" in "if{n}def" block
*
* 4.11 AWR 08/20/91 support "nearest" keyword as per
* Andy Fyfe
*
* changed MIN_ORD_LEN from 3 to 4 (to
* distinguish "even" from "every")
*
* add ABBR_DAY_LEN and ABBR_MONTH_LEN
* (cf. writefil.c) for length of
* abbreviated day/month names
*
* document %u and %w formats and number
* following %[+-] (cf. writefil.c)
*
* add DEF_WHOLE_YEAR (predefined when
* -w flag specified - cf. pcal.c)
*
* 4.1 AWR 08/16/91 support -G flag (outlined gray)
*
* 4.02 AWR 07/02/91 support -v flag (version number);
* add ordinal_suffix(); add format
* specifiers to help message
*
* 4.0 AWR 03/01/91 expand parameter message to explain
* parameter meaning when -w specified
*
* AWR 02/19/91 revise ordinal definitions for
* support of negative ordinals
*
* AWR 02/06/91 add text describing expression syntax
*
* AWR 02/04/91 support "odd" and "even" ordinals
*
* AWR 01/28/91 support -B (blank fill squares) flag
* and -O (outline "gray" dates) flag
*
* AWR 01/16/91 added moon file support (tokens, help
* file text, error messages); define
* note block heading here
*
* AWR 01/07/91 added support for -w (whole year) flag
*
* 3.0 AWR 12/10/90 added support for "workday", "weekday",
* "holiday", et. al.
*
* AWR 11/15/90 extracted from pcal.c; revised
* to contain all language-dependent
* strings
*/
#define ALL "all" /* command-line or date file keyword */
#ifdef MAIN_MODULE
char *months[12] = {
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
};
/* Must be a 2-D array so address within may be used as an initializer;
* wildcard names must be in same order as symbolic names in pcaldefs.h
*/
char days[14][12] = {
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday", /* weekday names */
"day", "weekday", "workday", "holiday", "nonweekday", "nonworkday",
"nonholiday" /* wildcards */
};
/* preprocessor tokens: token name, token code, dispatch routine; note that
* substring "if" must follow "ifdef" and "ifndef" for proper matching
*/
KWD_F pp_info[] = {
"define", PP_DEFINE, do_define,
"elif", PP_ELIF, do_ifdef,
"else", PP_ELSE, NULL,
"endif", PP_ENDIF, NULL,
"ifdef", PP_IFDEF, do_ifdef,
"ifndef", PP_IFNDEF, do_ifndef,
"if", PP_IFDEF, do_ifdef, /* "ifdef" synonym */
"include", PP_INCLUDE, NULL, /* do_include */
"undef", PP_UNDEF, do_undef,
NULL, PP_OTHER, NULL }; /* must be last */
/* ordinal numbers - e.g. "first Monday in September": ordinal name,
* ordinal code, ordinal value; note that "all" is parsed as a keyword
* and (depending on context) may be subsequently treated as an ordinal
*/
KWD_O ordinals[] = {
"first", ORD_POSNUM, 1,
"second", ORD_POSNUM, 2,
"third", ORD_POSNUM, 3,
"fourth", ORD_POSNUM, 4,
"fifth", ORD_POSNUM, 5,
"last", ORD_NEGNUM, -1,
"odd", ORD_ODD, 0,
"even", ORD_EVEN, 0,
NULL, ORD_OTHER, 0 }; /* must be last */
/* allowable suffixes for ordinal numbers - these must be in order 0, 1, 2...
* according to the rules of the target language; cf. ordinal_suffix() below
*/
char *ord_suffix[] = { "th", "st", "nd", "rd", NULL };
/* prepositions - e.g., "Friday after fourth Thursday in November" */
KWD preps[] = {
"before", PR_BEFORE,
"preceding", PR_BEFORE,
"on_or_before", PR_ON_BEFORE,
"oob", PR_ON_BEFORE,
"after", PR_AFTER,
"following", PR_AFTER,
"on_or_after", PR_ON_AFTER,
"ooa", PR_ON_AFTER,
"nearest", PR_NEAREST,
NULL, PR_OTHER }; /* must be last */
/* other keywords */
KWD keywds[] = {
ALL, DT_ALL,
"each", DT_ALL,
"every", DT_ALL,
"note", DT_NOTE,
"opt", DT_OPT,
"year", DT_YEAR,
NULL, DT_OTHER }; /* must be last */
/* moon phases (for moon file) */
KWD phases[] = {
"new_moon", MOON_NM, /* new moon */
"nm", MOON_NM,
"first_quarter",MOON_1Q, /* first quarter */
"1Q", MOON_1Q,
"FQ", MOON_1Q,
"full_moon", MOON_FM, /* full moon */
"FM", MOON_FM,
"last_quarter", MOON_3Q, /* last (third) quarter */
"LQ", MOON_3Q,
"third_quarter",MOON_3Q,
"3Q", MOON_3Q,
NULL, MOON_OTHER }; /* must be last */
/* default notes box header */
char default_notes_hdr[] = "Notes";
#else
extern char *months[];
extern char days[14][12];
extern KWD_F pp_info[];
extern KWD preps[];
extern KWD_O ordinals[];
extern char *ord_suffix[];
extern KWD keywds[];
extern KWD phases[];
extern char default_notes_hdr[];
#endif
/* minimum size of abbreviations - adjust as appropriate for target language */
#define MIN_DAY_LEN 3 /* distinguish "Thursday" from "third" */
#define ABBR_DAY_LEN 3 /* length of abbreviated day names */
#define MIN_MONTH_LEN 3
#define ABBR_MONTH_LEN 3 /* length of abbreviated month names */
#define MIN_PPTOK_LEN 3
#define MIN_PREP_LEN 7 /* distinguish "on_or_before", "on_or_after" */
#define MIN_ORD_LEN 4 /* distinguish "every" from "even" */
/*
* Symbolic names for command-line flags. These may be changed
* as desired in order to be meaningful in languages other than
* English.
*/
#define F_INITIALIZE 'I' /* re-initialize program defaults */
#define F_BLACK_DAY 'b' /* print day in black */
#define F_GRAY_DAY 'g' /* print day in gray */
#define F_DAY_FONT 'd' /* select alternate day font */
#define F_NOTES_FONT 'n' /* select alternate notes font */
#define F_TITLE_FONT 't' /* select alternate title font */
#define F_EMPTY_CAL 'e' /* print empty calendar */
#define F_DATE_FILE 'f' /* select alternate date file */
#define F_OUT_FILE 'o' /* select alternate output file */
#define F_LANDSCAPE 'l' /* landscape mode */
#define F_PORTRAIT 'p' /* portrait mode */
#define F_HELP 'h' /* generate full help message */
#define F_USAGE 'u' /* generate parameter usage message */
#define F_VERSION 'v' /* generate version ID */
#define F_MOON_4 'm' /* print new/half/full moons */
#define F_MOON_ALL 'M' /* print all moons */
#define F_DEFINE 'D' /* define preprocessor symbol */
#define F_UNDEF 'U' /* undefine preprocessor symbol */
#define F_L_FOOT 'L' /* define left foot string */
#define F_C_FOOT 'C' /* define center foot string */
#define F_R_FOOT 'R' /* define right foot string */
#define F_NOTES_HDR 'N' /* define heading for notes box */
#define F_FIRST_DAY 'F' /* define alternate starting day */
#define F_USA_DATES 'A' /* parse American date format */
#define F_EUR_DATES 'E' /* parse European date format */
#define F_X_TRANS 'X' /* X-axis transformation */
#define F_Y_TRANS 'Y' /* Y-axis transformation */
#define F_X_SCALE 'x' /* X-axis scale factor */
#define F_Y_SCALE 'y' /* Y-axis scale factor */
#define F_JULIAN 'j' /* print Julian day (day of year) */
#define F_JULIAN_ALL 'J' /* print Julian day and days left */
#define F_WHOLE_YEAR 'w' /* print whole year per page */
/* (cf. W_WYFLAG below) */
#define F_BLANK_BOXES 'B' /* don't fill unused boxes */
#define F_SC_NONE 'S' /* suppress small calendars */
#define F_SC_FIRST 'k' /* prev/next in first two boxes */
#define F_SC_SPLIT 'K' /* split between first and last boxes */
#define F_OUTLINE_GRAY 'G' /* outline and fill "gray" dates */
#define F_OUTLINE 'O' /* draw "gray" dates as outlines */
#defi